package bishiqiangxunDay19;
import java.util.*;

public class Test3 {
    //day19题目: 对称之美
    //利用哈希表 记录每个字符串中的每个字符是否出现过  双指针  遍历 一个从后开始遍历
    //一个从头开始遍历  如果  同一个字符同时出现过 说明成立继续移动指针  这样就能找出是否回文
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //输入有多少组测试数据
        int t = in.nextInt();
        while(t != 0) {
            t--;
            int n = in.nextInt();
            //要用数组模拟个哈希表  记录 每个字符串 中每种字符是否出现过
            boolean[][] hash = new boolean[n][26];
            for(int i = 0; i < n; i++) {
                //先输入n个字符串
                //方便用  把字符串转为字符数组
                char[] cs = in.next().toCharArray();
                for(char c : cs) {
                    hash[i][c-'a'] = true;  //出现了标记
                }
            }
            int left = 0;
            int right = n-1;  //双指针 一个从后遍历 一个从头开始遍历
            while(left < right) {
                if(fun(hash,left,right)) {
                    left++;
                    right--;
                }else{
                    break;
                }
            }
            if(left < right) {
                System.out.println("No");
            }else{
                System.out.println("Yes");
            }
        }
    }
    //这个是判断有没有左右字符串有没有同时有同一个字符 有才能回文  没有就不能
    private static boolean fun(boolean[][] hash,int left,int right) {
        for(int i = 0; i < 26; i++) {
            if(hash[left][i] && hash[right][i] ) {
                return true;
            }
        }
        return false;
    }
}
